﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _14_Func
{
    internal class Program
    {
        static void Main(string[] args)
        {
            #region 无参有返回值
            
            //定义委托=>定义委托变量=>定义方法=>绑定委托
            Func<string> func = () => "当前时间：" + DateTime.Now.ToString();
            Console.WriteLine(func.Invoke());

            #endregion

            #region 有参数有返回值=>一个参数

            //定义委托=>定义委托变量=>定义方法=>绑定委托
            Func<string, string> func1 = msg => string.Format("[{0}] 有参数有返回值的委托=>一个参数:{1}", DateTime.Now, msg);
            Console.WriteLine(func1.Invoke("Hello World"));

            #endregion

            #region 有参数有返回值=>多个参数
            
            //定义委托=>定义委托变量=>定义方法=>绑定委托
            Func<string, string, string> func2 = (msg1, msg2) => string.Format("[{0}] 有参数有返回值的委托=>多个参数:{1} {2}", DateTime.Now, msg1, msg2);
            Console.WriteLine(func2.Invoke("Hello", "World"));
            
            #endregion


            Console.ReadKey();
        }
    }
}
